package vm

const (
	R_R0 = iota // 通用寄存器
	R_R1
	R_R2
	R_R3
	R_R4
	R_R5
	R_R6
	R_R7
	R_PC    // 程序计数器
	R_COND  // 条件标志寄存器
	R_COUNT // 寄存器数量
)

// 标志寄存器标志位
const (
	FL_POS uint16 = 1 << 0 /* P */
	FL_ZRO uint16 = 1 << 1 /* Z */
	FL_NEG uint16 = 1 << 2 /* N */
)

// PC初始值
const PC_START uint16 = 0x3000

var reg [R_COUNT]uint16 // 寄存器数组

func init() {
	//reg[R_PC] = PC_START
}

func updateFlags(r uint16) {
	if reg[r] == 0 {
		reg[R_COND] = FL_ZRO
	} else if reg[r]>>15 > 0 {
		reg[R_COND] = FL_NEG
	} else {
		reg[R_COND] = FL_POS
	}
}
